Dual port memories are useful for a wide variety of applications. They have special usefulness in the areas of communications and multiprocessor systems. In multiprocessor systems, one processor may write data into the array and the other processor may read data out. In particular, dual port RAMs (Random Access Memories) are especially well suited for a communications application known as Asynchronous Transfer Mode (ATM). In an ATM switch, large amounts of data must be transferred between two processing devices. Another communications application is a standard IEEE 802.3 (commonly known under the trademark "Ethernet" available from Digital Equipment Corporation) communications router. These types of applications have a need for a dual port memory which is inexpensive but includes a large array.
Conventionally, dual port random access memories (RAMs) were constructed using one of two techniques. In the first technique, each memory cell was truly dual port and thus required eight transistors. Because the large dual port memory cells make the array itself quite large, integrated circuit memories based on this technique are expensive. A second technique utilizes standard single port static RAM cells with a partitioned array. If both ports simultaneously attempt to access the same partition, then one of the accesses must be delayed. As the number of partitions increases, the likelihood that a collision will occur decreases, but the cost increases due to the extra decoding and collision detection circuitry. Thus, what is needed is a large dual port RAM which uses conventional single port SRAM cells but which is also inexpensive and fast. These needs are met by the present invention whose features and advantages will be further described with reference to the drawings and the accompanying description.